package cn.itzzx.lagou.minicat.response;

import cn.itzzx.lagou.minicat.utils.HttpProtocolUtil;
import cn.itzzx.lagou.minicat.utils.StaticResourceUtil;

import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.OutputStream;

/**
 * 封装Response对象，需要依赖与 OutputStream
 * <p>
 * 该对象需要提供 输出方法（暂时考虑静态资源）
 *
 * @author Martin
 * @since 1.0
 */
public class Response {


    private OutputStream outputStream;

    public Response() {

    }

    public Response(OutputStream outputStream) {
        this.outputStream = outputStream;
    }

    /**
     * 输出指定字符串
     */
    public void output(String content) throws IOException {
        outputStream.write(content.getBytes());
    }

    /**
     * @param path 根据url获取静态资源的绝对路径，获取静态文件，然后最终通过输出流输出
     */
    public void outputHtml(String path) throws IOException {
        // 获取静态资源的绝对路径
        File file = new File(path);

        if(file.isDirectory()){
            //如果是一个文件夹，默认访问 index.html
            file = new File(path+"/index.html");
        }

        if (file.exists() && file.isFile()) {
            // 读取静态资源文件， 输出静态资源文件
            StaticResourceUtil.outputStaticResource(new FileInputStream(file), outputStream);
        } else {
            // 输出404
            output(HttpProtocolUtil.getHttpHeader404());
        }
    }
}
